<?php
namespace backend\controllers;

use Yii;
use yii\data\Pagination;
use common\models\FriendLinks;

/**
 * 友情链接管理
 *
 * @author jois
 */
class FriendLinksController extends BaseController
{

    /**
     * 友情链接列表页
     */
    public function actionIndex()
    {
        $input = Yii::$app->request->get();
        // 根据参数获取信息
        if (! empty($input['key'])) {
            $query = FriendLinks::find()->where("name like '%" . $input['key'] . "%'");
        } else {
            $query = FriendLinks::find();
        }

        // 根据排序抓取分页列表数据
        if (! empty($input['sort'])) {
            $query->orderBy("sort {$input['sort']}");
        }
        $countQuery = clone $query;

        // 分页处理
        $pages = new Pagination([
            'totalCount' => $countQuery->count()
        ]);
        $models = $query->offset($pages->offset)
            ->limit($pages->limit)
            ->all();

        return $this->render('index', compact('models', 'pages'));
    }

    /**
     * 友情链接编辑页
     */
    public function actionEdit()
    {
        $model = null;
        $id = Yii::$app->request->get('id', 0);
        if ((int) $id > 0) {
            $model = FriendLinks::findOne((int) $id);
        }
        return $this->render('edit', compact('model'));
    }

    /**
     * 友情链接保存操作
     */
    public function actionSave()
    {
        $post = Yii::$app->request->post();
        Yii::$app->session->setFlash('post', $post);
        if (Yii::$app->request->isPost && ! empty($post)) {
            // 保存数据
            $friend_links = isset($post['id']) ? FriendLinks::findOne([
                'id' => (int) $post['id']
            ]) : new FriendLinks();
            $friend_links->attributes = $post;
            $friend_links->save();

            // 验证数据
            if (! empty($friend_links->getErrors())) {
                Yii::$app->session->setFlash('message_error', $friend_links->getErrors());
                return $this->redirect(Yii::$app->request->referrer);
            }
            Yii::$app->session->setFlash('message_success', isset($post['id']) ? '编辑成功！' : '添加成功！');
            $session = Yii::$app->session;
            unset($session['post']);
            return $this->redirect('/friend-links/index', 200);
        }
        throw new \yii\web\MethodNotAllowedHttpException('操作异常，不支持非post提交保存数据');
        return FALSE;
    }

    /**
     * 友情链接删除
     */
    public function actionDelete()
    {
        if (! Yii::$app->request->isPost) {
            throw new \yii\web\MethodNotAllowedHttpException('操作异常，不支持非post提交删除数据');
            return false;
        }
        // 验证友情链接是否存在
        $query = FriendLinks::findOne((int) Yii::$app->request->post('id'));
        if (is_object($query)) {
            // 执行删除，并返回成功信息
            $query->delete();
            Yii::$app->session->setFlash('message_success', '删除成功！');
            return $this->redirect('/friend-links/index', 200);
        }
        // 不存在返回上一页，并返回错误信息
        Yii::$app->session->setFlash('message_error', '此友情链接不存在！');
        return $this->redirect(Yii::$app->request->referrer);
    }
}
